package com.sjz.myfrist;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

/***
 *   SharedPreferences   轻量级存储
 *  SharedPreferences：一个轻量级的存储类，特别适合用于保存软件配置参数。
 *  存储特点：
 * 1.     以键值对的特点存储数据
 * 2.       存储位置固定：data/data/程序包名/shared_prefs
 * 3.       存储的文件类型（文件后缀）固定： xml文件
 * 4.       存储的数据类型固定，只能是:boolean,float,int,long,String,Set<String>
 */
public class SharePreferencesCase extends AppCompatActivity implements View.OnClickListener{
    private EditText et_name;
    private SharedPreferences preferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.share_preferences_case);

        et_name = findViewById(R.id.share_preference_et_name);
        findViewById(R.id.share_preference_btn_save).setOnClickListener(this);

        /***
         *  （根据name查找SharedPreferences，若已经存在则获取，若不存在则创建一个新的）
         *  参数
         *  name：命名
         *  mode：模式，包括
         *  MODE_PRIVATE（只能被自己的应用程序访问）
         *  MODE_WORLD_READABLE（除了自己访问外还可以被其它应该程序读取）
         *  MODE_WORLD_WRITEABLE（除了自己访问外还可以被其它应该程序读取和写入）
         */
//      点击保存共享参数则保存数据  本地文件夹的名称 config.xml
        preferences = getSharedPreferences("config", Context.MODE_PRIVATE);
//      打开应用会检测是否有保存过的数据
        reload();
    }

    /***
     * 读取数据
     * 读取数据一般分为两个步骤
     * 使用Activity类的getSharedPreferences方法获得SharedPreferences对象；
     * 通过SharedPreferences对象的getXXX方法获取数据；
     */
    private void reload() {
        String name = preferences.getString("name",null);
        if(name != null){
            et_name.setText(name);
        }
    }

    /***
     * 存储数据
     * 保存数据一般分为四个步骤：
     * 使用Activity类的getSharedPreferences方法获得SharedPreferences对象；
     * 使用SharedPreferences接口的edit获得SharedPreferences.Editor对象；
     * 通过SharedPreferences.Editor接口的putXXX方法保存key-value对；
     * 通过过SharedPreferences.Editor接口的commit方法保存key-value对。
     * @param view
     */
    @Override
    public void onClick(View view) {
        String name = et_name.getText().toString();

        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("name",name);
        editor.commit();
    }
}